home *** CD-ROM | disk | FTP | other *** search
- // the declaration of class LINE_LIST
- // Copyright (C) 1996, 1997 Kazutaka Hirata <khirata@jove.acs.unt.edu>
-
- #ifndef _LINELIST_H_
- #define _LINELIST_H_
-
- #include <list>
-
- #include "../common/slist.h"
- #include "../finfo.h"
- #include "apttable.h"
- #include "file.h"
- #include "lineelem.h"
-
- class LINE_LIST : public extended_list<LINE_ELEMENT> {
- public:
- // constructors
-
- LINE_LIST() : extended_list<LINE_ELEMENT>() {}
- LINE_LIST(const LINE_LIST& src) : extended_list<LINE_ELEMENT>(src) {}
-
- void add(const LINE_LIST& list) { insert(end(), list.begin(), list.end()); }
-
- // max and min
-
- XY get_max() const;
- XY get_min() const;
-
- // block-related
-
- void shift(const XY& ac_dif, LINE_LIST& target) const;
-
- void unselect();
- void select_items_in_block(const XY& ac1, const XY& ac2);
- void collect_selected_items(LINE_LIST& dst) const;
- void remove_selected_items();
-
- // save and load
-
- int save(FILE_NEW& fp) const;
- private:
- typedef void (LINE_ELEMENT::*LOAD_FUNC)(const char *str);
- class LOAD_FUNC_INFO {
- public:
- uint version;
- LOAD_FUNC func;
- uint operator()() const { return version; }
- };
- static LOAD_FUNC_INFO load_func_table[];
- uint load_get_version(FILE_NEW& fp) const;
- LOAD_FUNC get_load_func(uint version) const;
- public:
- int load_primitive_170(FILE_NEW& fp);
- int load_component_170(FILE_NEW& fp);
- int load(FILE_NEW& fp);
-
- // purge
-
- private:
- int purge_vertical_lines(LINE_ELEMENT& line);
- int purge_holizontal_lines(LINE_ELEMENT& line);
- int purge_slash_lines(LINE_ELEMENT& line);
- int purge_backslash_lines(LINE_ELEMENT& line);
- public:
- int purge_lines();
-
- // miscellaneous
-
- bool is_there_nearest_point(XYT ac_min, const XY& ac) const;
- XY search_nearest_point(XYT ac_min, const XY& ac) const;
- void collect_aperture(APT_TABLE& apt_table) const;
-
- LINE_ELEMENT* search(XYT eps, const XY& ac);
-
- void rotate_90();
- };
-
- #endif /* _LINELIST_H_ */
-